import { createClient } from '@supabase/supabase-js';
import { SupabaseConfig, Marker, ChatMessage } from '../types';

// Supabase配置 - 从环境变量获取
const supabaseConfig: SupabaseConfig = {
  url: import.meta.env.VITE_SUPABASE_URL || 'https://your-project.supabase.co',
  anonKey: import.meta.env.VITE_SUPABASE_ANON_KEY || 'your-anon-key'
};

// 创建Supabase客户端
export const supabase = createClient(supabaseConfig.url, supabaseConfig.anonKey);

// 标记点相关操作
export const markersApi = {
  // 获取所有标记点
  async getMarkers() {
    const { data, error } = await supabase
      .from('markers')
      .select('*')
      .order('created_at', { ascending: false });
    
    if (error) {
      console.error('获取标记点失败:', error);
      throw error;
    }
    
    return data;
  },

  // 添加新标记点
  async addMarker(marker: Omit<Marker, 'id' | 'createdAt'>) {
    const { data, error } = await supabase
      .from('markers')
      .insert([
        {
          lat: marker.lat,
          lng: marker.lng,
          title: marker.title,
          description: marker.description
        }
      ])
      .select();

    if (error) {
      console.error('添加标记点失败:', error);
      throw error;
    }

    return data?.[0];
  },

  // 删除标记点
  async deleteMarker(id: string) {
    const { error } = await supabase
      .from('markers')
      .delete()
      .eq('id', id);

    if (error) {
      console.error('删除标记点失败:', error);
      throw error;
    }
  }
};

// 聊天记录相关操作
export const chatMessagesApi = {
  // 获取聊天记录
  async getChatHistory() {
    const { data, error } = await supabase
      .from('chat_messages')
      .select('*')
      .order('created_at', { ascending: true });
    
    if (error) {
      console.error('获取聊天记录失败:', error);
      throw error;
    }
    
    return data;
  },

  // 添加聊天消息
  async addMessage(message: Omit<ChatMessage, 'id' | 'timestamp'>) {
    const { data, error } = await supabase
      .from('chat_messages')
      .insert([
        {
          type: message.type,
          content: message.content
        }
      ])
      .select();

    if (error) {
      console.error('添加聊天消息失败:', error);
      throw error;
    }

    return data?.[0];
  }
};